package com.kpmg.datalake.common.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.kpmg.datalake.common.enums.ProjectSyncStatusEnum;
import com.kpmg.datalake.db.model.Project;
import java.util.List;

/**
 * <p>
 * 项目基础信息 服务类
 * </p>
 *
 * @author azhao6
 * @since 2018-08-17
 */
public interface IProjectService extends IService<Project> {

  /**
   * 获取用户项目信息
   *
   * @param usrId usrId
   * @return 项目列表
   */
  List<Project> loadUserProjects(String usrId);

  /**
   * 获取未同步完成的项目信息
   * @param projectSyncStatus  项目状态
   * @return 项目信息
   */
  List<Project> getSyncNotCompleteProjectList(ProjectSyncStatusEnum projectSyncStatus);

  /**
   * 与dataLake项目同步
   */
  void syncProject();

  /**
   * 从dataLake 同步项目ftp 信息
   *
   * @param projectId 项目ID
   */
  void syncProjectSftpInfo(String projectId);

  /**
   * 初始化项目数据库信息
   *
   * @param projectId 项目ID
   */
  void initProjectDatabase(String projectId);

  /**
   * 同步项目数据信息
   *
   * @param projectId 项目ID
   */
  void syncProjectData(String projectId) throws Exception;

  /**
   * * 获取项目信息，可按照项目名过滤
   *
   * @return 项目信息
   */
  Page<Project> getProjectList(int currentPage, int pageSize, String queryParam);

  /**
   * 通过项目ID 获取项目信息 实体信息和 db信息
   *
   * @param projectId 项目ID
   * @return 项目信息
   */
  Project selectProjectAndEntAndDbById(String projectId);

  /**
   * 通过项目NAME 获取项目信息 实体信息和 db信息
   *
   * @param projectName 项目NAME
   * @return 项目信息
   */
   Project selectProjectByName(String projectName);
}
